def binary_search(arr, x):
    """
    Функция для выполнения бинарного поиска в отсортированном массиве.

    :param arr: Отсортированный массив для поиска.
    :param x: Значение, которое нужно найти.
    :return: Индекс найденного значения в массиве или -1, если значение не найдено.
    """
    low = 0
    high = len(arr) - 1

    # Пока низ меньше или равен высокому и больше начального индекса
    while low <= high:
        mid = (low + high) // 2

        # Если элемент в середине массива равен искомому значению, возвращаем его индекс
        if arr[mid] == x:
            return mid

        # Если элемент в середине меньше искомого значения, проверяем элементы правее
        elif arr[mid] < x:
            low = mid + 1
        # Если элемент в середине больше искомого значения, проверяем элементы слева
        else:
            high = mid - 1

    # Если цикл завершается, значит элемент не найден
    return -1


# Пример использования функции
arr = [2, 3, 4, 10, 40]
x = 10
index = binary_search(arr, x)
if index != -1:
    print(f"Элемент {x} найден в массиве по индексу {index}")
else:
    print(f"Элемент {x} не найден в массиве")
